//https://www.nowcoder.com/practice/c5fbf7325fbd4c0ea3d0c3ea6bc6cc79?tpId=295&tqId=2285793&ru=/exam/company&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Fcompany
//打家劫舍（1）
//你是一个经验丰富的小偷，准备偷沿街的一排房间，每个房间都存有一定的现金，为了防止被发现，你不能偷相邻的两家，即，如果偷了第一家，就不能再偷第二家；如果偷了第二家，那么就不能偷第一家和第三家。
//给定一个整数数组nums，数组中的元素表示每个房间存有的现金数额，请你计算在不被发现的前提下最多的偷窃金额。

int rob(int* nums, int numsLen ) {
    // write code here
    int dp[numsLen + 3];
    int max = 0;
    memset(dp, 0, sizeof(dp));
    for(int i = 0; i < numsLen; i++)
    {
        dp[i + 3] = (dp[i] > dp[i + 1] ? dp[i] : dp[i + 1]) + nums[i];
        max = max > dp[i + 3] ? max : dp[i + 3];
    }
    return max;
}